<?php
/**
 * Ohlasky Model for Ohlasky Component
 * @license		GNU/GPL
 */

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();

jimport( 'joomla.application.component.model' );

/**
 * Ohlasky Model
 */
class OhlaskysModelOhlasky_tydne extends JModel
{



    function getAktivni_mista() {
        $db =& JFactory::getDBO();
        $query5 = 'SELECT * FROM #__mista	 WHERE #__mista.aktivni = "Ano"';
        $db->setQuery( $query5 );
        $mista_obj_list = $db->loadObjectList();
        return $mista_obj_list;
    }



    //vraci seznam objektu
    function getAktualni_ohlasky()
    {
        $db =& JFactory::getDBO();
        $chyba = '';
        $tyden_id_int = JRequest::getVar('tyden_id',  0, '', 'integer');
        if (!empty($tyden_id_int)) {
            //hledame tyden dle predaneho id
            $nalezeny_tyden_obj = $this->getTyden_id($tyden_id_int);
            if (empty($nalezeny_tyden_obj)) {
                $chyba = 'CHYBA: Týden id: '.$tyden_id_int.' nebyl nalezen!';
            }
        } else {
            //hledame aktualni nebo posledni tyden ohlasek
            $chyba = 'Chyba: Nebylo předáno id tydne!';
        }
        if (empty($chyba)) {
            $mista_obj_list = array();
            $nalezeny_tyden_id = $nalezeny_tyden_obj->id;
            settype($nalezeny_tyden_id, "integer");
            $mista_obj_list = $this->getAktivni_mista();
            if (empty($mista_obj_list)) {
                $chyba = 'Nebyla nalezena žádná aktivní místa!';
            }
        }

        if (empty($chyba)) {
            //vytvoreni pole s misty
            $x = 0;
            while (list($key, $misto_obj) = each($mista_obj_list)) {
                $mista_arr[$x] = $misto_obj->misto;
                $x++;
            }

            //vytvoreni asoc.pole kde klic je nazev mista a hodnota jeho id
            foreach ($mista_obj_list as $misto_obj) {
                $mista_id_arr[$misto_obj->misto] = $misto_obj->id;
            }

            //vytvoreni pole se dny v tydnu $dny_tydne_arr
            $z = 0;
            $dny_tydne_arr[$z] = '1';
            $z++;
            $dny_tydne_arr[$z] = '2';
            $z++;
            $dny_tydne_arr[$z] = '3';
            $z++;
            $dny_tydne_arr[$z] = '4';
            $z++;
            $dny_tydne_arr[$z] = '5';
            $z++;
            $dny_tydne_arr[$z] = '6';
            $z++;
            $dny_tydne_arr[$z] = '7';
            $z++;

            //inicializace pole bunky tabulky
            foreach ($dny_tydne_arr as $den_tydne_str) {
                foreach ($mista_arr as $misto) {
                    $radek_bunky_arr = array('&nbsp;');
                    $bunky_arr[$den_tydne_str][$misto] = $radek_bunky_arr;
                }
            }
            $query2 = 'SELECT #__mista.misto, #__ohlasky.datum, #__ohlasky.cas,
            #__ohlasky.cas_konec,
            #__ohlasky.hruby_popis, #__ohlasky.id, #__ohlasky.zvyrazneni
            FROM #__ohlasky JOIN #__mista
            ON #__ohlasky.misto_id = #__mista.id
            WHERE  #__ohlasky.tyden_id = '.$nalezeny_tyden_id.' ORDER BY #__ohlasky.cas';
            $db->setQuery( $query2 );
            $akt_ohlasky_obj_list = $db->loadObjectList();
            $barvy_obj_list = $this->getBarvy();

            while (list($key, $ohlaska_obj) = each($akt_ohlasky_obj_list))
            {
                $cas = $ohlaska_obj->cas;
                $datum =  $ohlaska_obj->datum;
                $datum_a_cas = $datum.' '.$cas;
                $dateTimeObj = date_create($datum_a_cas);
                if (!is_object($dateTimeObj)) {
                    $dateTimeObj = date_create($datum);
                }
                if (is_object($dateTimeObj)) {
                    $den_tydne_str = $dateTimeObj->format('N');
                    $misto = $ohlaska_obj->misto;
                    if ($this->jeMistoV_aktiv_mistech($mista_obj_list, $misto)) {
                        $ind = count($bunky_arr[$den_tydne_str][$misto]);
                        if ($ind == 1) {
                            if ($bunky_arr[$den_tydne_str][$misto][0] == '&nbsp;') {
                                $ind = 0;
                            }
                        }
                        $bunky_arr[$den_tydne_str][$misto][$ind] = $ohlaska_obj;
                    }
                }
            }

            //najdeme odstavce tydne a ulozime je do pole
            $query7 = 'SELECT * FROM #__odstavce
            WHERE  #__odstavce.tyden_id = '.$nalezeny_tyden_id.' ORDER BY #__odstavce.por_cis';
            $db->setQuery( $query7 );
            $odstavce_obj_list = $db->loadObjectList();

            $aktualni_ohlasky['bunky_arr'] = $bunky_arr;
            $aktualni_ohlasky['mista_arr'] = $mista_arr;
            $aktualni_ohlasky['mista_id_arr'] = $mista_id_arr;
            $aktualni_ohlasky['nalezeny_tyden_obj'] = $nalezeny_tyden_obj;
            $aktualni_ohlasky['dny_tydne_arr'] = $dny_tydne_arr;
            $aktualni_ohlasky['odstavce_obj_list'] = $odstavce_obj_list;
            $aktualni_ohlasky['barvy_obj_list'] = $barvy_obj_list;

        }
        if (!empty($chyba)) {
            $aktualni_ohlasky['nalezeny_tyden_obj'] = null;
        }
        $aktualni_ohlasky['nastaveni'] = $this->getNastaveni();
        $aktualni_ohlasky['chyba'] = $chyba;
        return $aktualni_ohlasky;
    }



    function getTyden_id(&$tyden_id_int) {
        $db =& JFactory::getDBO();
        $query6 = 'SELECT * FROM #__tydny WHERE #__tydny.id = '.$tyden_id_int;
        $db->setQuery( $query6 );
        $tyden_obj = $db->loadObject();
        return $tyden_obj;
    }

    function getBarvy() {
        $db =& JFactory::getDBO();
        $query8 = 'SELECT * FROM #__barvy WHERE #__barvy.aktivni = "Ano"';
        $db->setQuery( $query8 );
        $barvy_obj_list = $db->loadObjectList();
        return $barvy_obj_list;
    }

    function getNastaveni() {
        $db =& JFactory::getDBO();
        $query8 = 'SELECT * FROM #__nastaveni';
        $db->setQuery( $query8 );
        $nastaveni_obj = $db->loadObject();
        return $nastaveni_obj;
    }

    //vraci false/true
    function jeMistoV_aktiv_mistech(&$mista_obj_list, &$misto) {
        $je_v_akt_mistech_bool = false;
        foreach ($mista_obj_list as $misto_obj) {
            $mista_id_arr[$misto_obj->misto] = $misto_obj->id;
            if ($misto_obj->misto == $misto) {
                $je_v_akt_mistech_bool = true;
            }
        }
        return $je_v_akt_mistech_bool;
    }



}


